Adelfa logoAdelfa
First Order

Less than or equal to is monotonic over addition

Adelfa logo
leq.lf
nat : type.
z : nat.
s : {x : nat} nat.

leq : {x1: nat} {x2: nat} type.
leq-z : {x2: nat} leq z x2.
leq-s : {x1:nat}{x2:nat}{d:leq x1 x2} leq (s x1) (s x2).

eq-nat : {x1: nat} {x2: nat} type.
eq-nat-z : eq-nat z z.
eq-nat-s : {x1:nat}{x2:nat}{d:eq-nat x1 x2} eq-nat (s x1) (s x2).

plus : {x1: nat}{x2:nat}{x3:nat} type.
plus-z : {x:nat} plus z x x.
plus-s : {x1:nat}{x2:nat}{x3:nat}{d:plus x1 x2 x3} plus (s x1) x2 (s x3).
Adelfa logo
leq.ath



  {x1: nat} => exists D, {D: plus x1 z x1}.










  {D: plus x1 x2 x3} =>
  exists D2, {D2: plus x1 (s x2) (s x3)}.










  {D: plus x1 x2 x3} => exists D2, {D2: plus x2 x1 x3}.























  {D1: leq x1 x2} =>
  {D2: leq x2 x1} => exists E, {E: eq-nat x1 x2}.












  {D1: leq x1 x2} => {D2: leq x2 x3} =>
  exists E, {E: leq x1 x3}.













% Monotonicity of leq over addition
% for all m n p q, such that m <= n and p <= q
% m + p <= n + q

% First prove it works for right side of the addition
% m p q, such that p <= q
% m + p <= m + q

  {D2: plus x1 x2 x12} => {D1: leq x2 x3} =>
  {D3: plus x1 x3 x13} =>
  exists E, {E: leq x12 x13}.











% Then prove it works for left side of the addition
% m n p, such that m <= n
% m + p <= n + p

  {D1: leq x1 x2} => {D2: plus x1 x3 x13} => {D3: plus x2 x3 x23} =>
  exists E, {E: leq x13 x23}.








  {D1: leq x1 x2} => {D2: leq x3 x4} =>
  {D3: plus x1 x3 x13} => {D4: plus x2 x4 x24} =>
  {D5: plus x2 x3 x23} =>
  exists E, {E: leq x13 x24}.