Ich versuche lexikographische Anordnung auf Strings über Posets zu definieren, aber ich bin mir nicht ganz sicher, wie man die PartialOrder
Typklasse verwendet.Coq: Verwendung von `PartialOrder` typeclass
Require Import List RelationClasses.
Fail Inductive lex_leq {A : Type} `{po : PartialOrder A} : list A -> list A -> Prop :=
| lnil: forall l, lex_leq nil l
| lcons:
forall (hd1 hd2 : A) (tl1 tl2 : list A),
hd1 <= hd2 -> (* error *)
(hd1 = hd2 -> lex_leq tl1 tl2) ->
lex_leq (hd1 :: tl1) (hd2 :: tl2).
Teilausgang:
The term "hd1" has type "A" while it is expected to have type "nat".
Klar <=
ist die falsche Schreibweise hier zu verwenden; Ich frage mich, wie ich eine Bestellbeziehung von meiner po
Instanz erhalten kann.
In diesem Fall heißt die Beziehung 'R', also wird' R hd1 hd2' funktionieren; Sie könnten natürlich in diesem Fall Ihre eigene Notation definieren. – ejgallego