import proveit
from proveit import defaults
from proveit import x, y, z
from proveit.logic import Equals
from proveit.numbers import LessEq, Less
from proveit.numbers.ordering import less_eq_def
from proveit.numbers.ordering import transitivity_less_less_eq
theory = proveit.Theory() # the theorem's theory
%proving transitivity_less_eq_less_eq
defaults.assumptions = transitivity_less_eq_less_eq.all_conditions()
less_eq_def
x_leq_y__expanded = less_eq_def.instantiate({x:x, y:y}).derive_right_via_equality()
x_less_y, x_eq_y = x_leq_y__expanded.operands
transitivity_less_less_eq
x_less_z = transitivity_less_less_eq.instantiate({x:x, y:y, z:z}, assumptions=defaults.assumptions+(x_less_y,))
x_less_z.derive_relaxed()
x_eq_y.sub_left_side_into(LessEq(y, z), assumptions=defaults.assumptions+(x_eq_y,))
x_leq_y__expanded.derive_via_dilemma(LessEq(x, z))
%qed