53I57WPJKAX7YSCLT6HM6PS6T2DHIO5Y4NFULRXWI5ZRG5UPMODQC public exportShow Integer whereshow = prim__cast_IntegerString%integerLit fromPrimIntegerpublic exportinterface SupportPrimIntegerLiteral t wherePrimIntegerRestriction : Integer -> TypefromPrimInteger : (x : Integer) -> {auto ok : PrimIntegerRestriction x} -> ttoPrimInteger : t -> Integerpublic exportSupportPrimIntegerLiteral Integer wherePrimIntegerRestriction x = UnitfromPrimInteger x = xtoPrimInteger = identity
natFromPrimInteger : (x : Integer) -> {auto ok : x `GTE` 0} -> NaturalnatFromPrimInteger 0 = ZeronatFromPrimInteger x = case (decGTE (prim__sub_Integer x 1) 0) ofYes p => Succesor $ assert_total $ natFromPrimInteger $ prim__sub_Integer x 1No cp => void $ believe_me () -- TODO: impossible%builtin IntegerToNatural natFromPrimIntegernatToPrimInteger : Natural -> IntegernatToPrimInteger Zero = 0natToPrimInteger (Succesor x) = prim__add_Integer 1 $ natToPrimInteger x
fromInteger : (x : Integer) -> {auto ok : x `GTE` 0} -> NaturalfromInteger 0 = ZerofromInteger x = case (decGTE (prim__sub_Integer x 1) 0) ofYes p => Succesor $ assert_total $ fromInteger $ prim__sub_Integer x 1No cp => void $ believe_me ()
SupportPrimIntegerLiteral Natural wherePrimIntegerRestriction x = x `GTE` 0fromPrimInteger = natFromPrimIntegertoPrimInteger = natToPrimInteger
module Control.Showpublic exportinterface Show t whereshow : t -> String