Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 14 additions & 18 deletions src/Data/List/Relation/Binary/Sublist/Heterogeneous/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ open import Function.Base
open import Function.Bundles using (_⤖_; _⇔_ ; mk⤖; mk⇔)
open import Function.Consequences.Propositional using (strictlySurjective⇒surjective)
open import Relation.Nullary.Decidable as Dec using (Dec; does; _because_; yes; no; ¬?)
open import Relation.Nullary.Negation using (¬_; contradiction)
open import Relation.Nullary.Negation using (¬_; contradiction; contradiction′)
open import Relation.Nullary.Reflects using (invert)
open import Relation.Unary as U using (Pred)
open import Relation.Binary.Core using (Rel; REL; _⇒_)
Expand Down Expand Up @@ -400,26 +400,22 @@ module Antisymmetry

open ℕ.≤-Reasoning

private
antisym-lemma : ∀ xs ys₁ y → Sublist R xs ys₁ → ¬ Sublist S (y ∷ ys₁) xs
antisym-lemma xs ys₁ y rs ss = ℕ.<-irrefl ≡.refl (begin
length (y ∷ ys₁) ≤⟨ length-mono-≤ ss ⟩
length xs ≤⟨ length-mono-≤ rs ⟩
length ys₁ ∎)

antisym : Antisym (Sublist R) (Sublist S) (Pointwise E)
antisym [] [] = []
antisym (r ∷ rs) (s ∷ ss) = rs⇒e r s ∷ antisym rs ss
-- impossible cases
antisym (_∷ʳ_ {xs} {ys₁} y rs) (_∷ʳ_ {ys₂} {zs} z ss) =
contradiction (begin
length (y ∷ ys₁) ≤⟨ length-mono-≤ ss ⟩
length zs ≤⟨ ℕ.n≤1+n (length zs) ⟩
length (z ∷ zs) ≤⟨ length-mono-≤ rs ⟩
length ys₁ ∎) $ ℕ.<-irrefl ≡.refl
antisym (_∷ʳ_ {xs} {ys₁} y rs) (_∷_ {y} {ys₂} {z} {zs} s ss) =
contradiction (begin
length (z ∷ zs) ≤⟨ length-mono-≤ rs ⟩
length ys₁ ≤⟨ length-mono-≤ ss ⟩
length zs ∎) $ ℕ.<-irrefl ≡.refl
antisym (_∷ʳ_ {xs} {ys₁} y rs) ss =
contradiction′ (antisym-lemma xs ys₁ y rs) ss
antisym (_∷_ {x} {xs} {y} {ys₁} r rs) (_∷ʳ_ {ys₂} {zs} z ss) =
contradiction (begin
length (y ∷ ys₁) ≤⟨ length-mono-≤ ss ⟩
length xs ≤⟨ length-mono-≤ rs ⟩
length ys₁ ∎) $ ℕ.<-irrefl ≡.refl
contradiction′ (antisym-lemma xs ys₁ y rs) ss
-- diagonal cases
antisym [] [] = []
antisym (r ∷ rs) (s ∷ ss) = rs⇒e r s ∷ antisym rs ss

open Antisymmetry public

Expand Down