variable q : Nat → Bool
variable f : Nat → Nat → Nat

theorem T1 (a b : Nat) (H1 : a = b) (H2 : q (f (f a a) (f a a)))  :  q (f (f a b) (f a a))
:= subst H2 H1

check @subst
set_option pp::implicit true
print environment 1