UNPKG

lean4-code-actions

Version:

Refactorings and snippets for Lean 4

24 lines (17 loc) 1.04 kB
import { BasicArithmetic } from '../arithmetic' import { BasicAssertions } from '../arithmetic/getAssertions' import { BigIntAllAssertions } from '../bigint/BigIntAllAssertions' import { BigIntBasicArithmetic } from '../bigint/BigIntBasicArithmetic' export interface Quotient<N> { numerator: N denominator: N } export type QuotientTuple<N> = [N, N] export const fromQuotientTupleToQuotient = <N>([numerator, denominator]: QuotientTuple<N>): Quotient<N> => ({ numerator, denominator }) export const fromQuotientToQuotientTuple = <N>({ numerator, denominator }: Quotient<N>): QuotientTuple<N> => [numerator, denominator] export const parseQuotientGen = <N>({ zero }: BasicArithmetic<N>, assert: BasicAssertions<N>) => ({ numerator, denominator }: Quotient<N>): Quotient<N> => { assert.lte(numerator, denominator, 'numerator', 'denominator') assert.gte(denominator, zero, 'denominator', 'zero') return { numerator, denominator } } export const parseQuotientGenBigInt = parseQuotientGen(BigIntBasicArithmetic, BigIntAllAssertions)