/-! Tests for `pp.numericTypes` and `pp.natLit` RFC #3021 -/ open Lean section /-! Both raw nat lits and non-raw natural numbers pretty print the same by default -/ /-- info: 22 : Nat -/ #guard_msgs in #check nat_lit 22 /-- info: 22 : Nat -/ #guard_msgs in #check 22 set_option pp.natLit true /-! The raw nat lit pretty prints with the `nat_lit` prefix when `pp.natLit` is true. -/ /-- info: nat_lit 22 : Nat -/ #guard_msgs in #check nat_lit 22 /-- info: 22 : Nat -/ #guard_msgs in #check 22 end section set_option pp.numericTypes true /-! The `pp.numericTypes` option sets `pp.natLit` to true. -/ /-- info: nat_lit 22 : Nat -/ #guard_msgs in #check nat_lit 22 /-! Natural number literal -/ /-- info: (22 : Rat) : Rat -/ #guard_msgs in #check (22 : Rat) /-! Negative integer literal -/ /-- info: (-22 : Rat) : Rat -/ #guard_msgs in #check (-22 : Rat) /-! Rational literal of two natural numbers -/ /-- info: (22 / 17 : Rat) : Rat -/ #guard_msgs in #check (22 / 17 : Rat) /-! Rational literal of a negative integer and a rational -/ /-- info: (-22 / 17 : Rat) : Rat -/ #guard_msgs in #check (-22 / 17 : Rat) /-! Not a rational literal since the denominator is negative. -/ /-- info: (-22 : Rat) / (-17 : Rat) : Rat -/ #guard_msgs in #check (-22 / -17 : Rat) /-! Natural number literal for `Fin`. -/ /-- info: (17 : Fin (22 : Nat)) : Fin (22 : Nat) -/ #guard_msgs in #check (17 : Fin 22) /-! Natural number literal for `Nat`. -/ /-- info: (2 : Nat) : Nat -/ #guard_msgs in #check 2 /-! Natural number literals in the context of an equation. -/ /-- info: (2 : Nat) + (1 : Nat) = (3 : Nat) : Prop -/ #guard_msgs in #check 2 + 1 = 3 /-! Testing `pp.explicit` override. The `2` appears as `nat_lit` in the `OfNat.ofNat` expression. -/ set_option pp.explicit true in /-- info: @OfNat.ofNat Nat (nat_lit 2) (instOfNatNat (nat_lit 2)) : Nat -/ #guard_msgs in #check 2 end section set_option pp.all true /-! Testing `pp.all`. -/ /-- info: @OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2)) : Nat -/ #guard_msgs in #check 2 /-! Testing that `pp.all` overrides `pp.natLit`. -/ set_option pp.natLit false /-- info: @OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2)) : Nat -/ #guard_msgs in #check 2 end