structure Rat where num : Int den : Nat pos : den > 0 instance (n : Nat) : OfNat Rat n where ofNat := { num := n den := 1 pos := by decide } instance : Add Rat where add a b := { num := a.num * b.den + b.num * a.den den := a.den * b.den pos := sorry } instance : NatCast Rat where natCast n := { num := n den := 1 pos := by decide } instance : IntCast Rat where intCast n := { num := n den := 1 pos := by decide } def f1 (x : Rat) (n : Nat) : Rat := x + n + 1 def f2 (x : Rat) (n : Nat) : Rat := 1 + x + n def f3 (x : Rat) (n : Nat) : Rat := 1 + n + x + 2 def f4 (x : Rat) (n : Nat) : Rat := n + 1 + x + n