diff --git a/Makefile b/Makefile index f00672eacc07f5cff53eeff0d55ff11bce98b08f..ed72ed36bfe05f2190609a728b737fdf4b860565 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ # # This Makefile was generated by the command line : -# coq_makefile -f _CoqProject ./util/fixedpoint.v ./util/ssromega.v ./util/bigcat.v ./util/nat.v ./util/notation.v ./util/list.v ./util/powerset.v ./util/all.v ./util/sorting.v ./util/tactics.v ./util/bigord.v ./util/exists.v ./util/induction.v ./util/sum.v ./util/divround.v ./util/counting.v ./implementation/basic/bertogna_edf_example.v ./implementation/basic/task.v ./implementation/basic/schedule.v ./implementation/basic/job.v ./implementation/basic/arrival_sequence.v ./implementation/jitter/bertogna_edf_example.v ./implementation/jitter/task.v ./implementation/jitter/schedule.v ./implementation/jitter/job.v ./implementation/jitter/arrival_sequence.v ./analysis/basic/bertogna_fp_theory.v ./analysis/basic/interference_bound_edf.v ./analysis/basic/interference_bound_fp.v ./analysis/basic/interference_bound.v ./analysis/basic/bertogna_edf_comp.v ./analysis/basic/bertogna_fp_comp.v ./analysis/basic/bertogna_edf_theory.v ./analysis/basic/workload_bound.v ./analysis/parallel/bertogna_fp_theory.v ./analysis/parallel/interference_bound_edf.v ./analysis/parallel/interference_bound_fp.v ./analysis/parallel/interference_bound.v ./analysis/parallel/bertogna_edf_comp.v ./analysis/parallel/bertogna_fp_comp.v ./analysis/parallel/bertogna_edf_theory.v ./analysis/parallel/workload_bound.v ./analysis/jitter/bertogna_fp_theory.v ./analysis/jitter/interference_bound_edf.v ./analysis/jitter/interference_bound_fp.v ./analysis/jitter/interference_bound.v ./analysis/jitter/bertogna_edf_comp.v ./analysis/jitter/bertogna_fp_comp.v ./analysis/jitter/bertogna_edf_theory.v ./analysis/jitter/workload_bound.v ./model/basic/time.v ./model/basic/schedulability.v ./model/basic/task.v ./model/basic/task_arrival.v ./model/basic/platform.v ./model/basic/schedule.v ./model/basic/priority.v ./model/basic/interference_edf.v ./model/basic/interference.v ./model/basic/workload.v ./model/basic/job.v ./model/basic/arrival_sequence.v ./model/basic/response_time.v ./model/basic/platform_fp.v ./model/jitter/time.v ./model/jitter/schedulability.v ./model/jitter/task.v ./model/jitter/task_arrival.v ./model/jitter/platform.v ./model/jitter/schedule.v ./model/jitter/priority.v ./model/jitter/interference_edf.v ./model/jitter/interference.v ./model/jitter/workload.v ./model/jitter/job.v ./model/jitter/arrival_sequence.v ./model/jitter/response_time.v ./model/jitter/platform_fp.v -o Makefile +# coq_makefile -f _CoqProject ./util/fixedpoint.v ./util/ssromega.v ./util/bigcat.v ./util/nat.v ./util/seqset.v ./util/notation.v ./util/list.v ./util/powerset.v ./util/all.v ./util/sorting.v ./util/tactics.v ./util/bigord.v ./util/exists.v ./util/induction.v ./util/sum.v ./util/divround.v ./util/counting.v ./implementation/basic/bertogna_edf_example.v ./implementation/basic/task.v ./implementation/basic/schedule.v ./implementation/basic/job.v ./implementation/basic/arrival_sequence.v ./implementation/jitter/bertogna_edf_example.v ./implementation/jitter/task.v ./implementation/jitter/schedule.v ./implementation/jitter/job.v ./implementation/jitter/arrival_sequence.v ./analysis/basic/bertogna_fp_theory.v ./analysis/basic/interference_bound_edf.v ./analysis/basic/interference_bound_fp.v ./analysis/basic/interference_bound.v ./analysis/basic/bertogna_edf_comp.v ./analysis/basic/bertogna_fp_comp.v ./analysis/basic/bertogna_edf_theory.v ./analysis/basic/workload_bound.v ./analysis/parallel/bertogna_fp_theory.v ./analysis/parallel/interference_bound_edf.v ./analysis/parallel/interference_bound_fp.v ./analysis/parallel/interference_bound.v ./analysis/parallel/bertogna_edf_comp.v ./analysis/parallel/bertogna_fp_comp.v ./analysis/parallel/bertogna_edf_theory.v ./analysis/parallel/workload_bound.v ./analysis/jitter/bertogna_fp_theory.v ./analysis/jitter/interference_bound_edf.v ./analysis/jitter/interference_bound_fp.v ./analysis/jitter/interference_bound.v ./analysis/jitter/bertogna_edf_comp.v ./analysis/jitter/bertogna_fp_comp.v ./analysis/jitter/bertogna_edf_theory.v ./analysis/jitter/workload_bound.v ./model/basic/time.v ./model/basic/schedulability.v ./model/basic/task.v ./model/basic/task_arrival.v ./model/basic/platform.v ./model/basic/schedule.v ./model/basic/priority.v ./model/basic/interference_edf.v ./model/basic/interference.v ./model/basic/workload.v ./model/basic/job.v ./model/basic/arrival_sequence.v ./model/basic/response_time.v ./model/basic/platform_fp.v ./model/jitter/time.v ./model/jitter/schedulability.v ./model/jitter/task.v ./model/jitter/task_arrival.v ./model/jitter/platform.v ./model/jitter/schedule.v ./model/jitter/priority.v ./model/jitter/interference_edf.v ./model/jitter/interference.v ./model/jitter/workload.v ./model/jitter/job.v ./model/jitter/arrival_sequence.v ./model/jitter/response_time.v ./model/jitter/platform_fp.v -o Makefile # .DEFAULT_GOAL := all @@ -65,7 +65,7 @@ OPT?= COQDEP?="$(COQBIN)coqdep" -c COQFLAGS?=-q $(OPT) $(COQLIBS) $(OTHERFLAGS) $(COQ_XML) COQCHKFLAGS?=-silent -o -COQDOCFLAGS?=-interpolate -utf8 +COQDOCFLAGS?=-interpolate -utf8 --parse-comments --external https://math-comp.github.io/math-comp/htmldoc/ mathcomp COQC?=$(TIMER) "$(COQBIN)coqc" GALLINA?="$(COQBIN)gallina" COQDOC?="$(COQBIN)coqdoc" @@ -98,6 +98,7 @@ VFILES:=util/fixedpoint.v\ util/ssromega.v\ util/bigcat.v\ util/nat.v\ + util/seqset.v\ util/notation.v\ util/list.v\ util/powerset.v\ diff --git a/util/all.v b/util/all.v index 5ee67b8a496cdb36670df403b243de2baf0747b5..886d33c93b778aa8ea39493e5a314d9f0db1f61b 100644 --- a/util/all.v +++ b/util/all.v @@ -1,3 +1,4 @@ +Add LoadPath ".." as rt. Require Export rt.util.tactics. Require Export rt.util.notation. @@ -13,4 +14,5 @@ Require Export rt.util.nat. Require Export rt.util.powerset. Require Export rt.util.sorting. Require Export rt.util.ssromega. -Require Export rt.util.sum. \ No newline at end of file +Require Export rt.util.sum. +Require Export rt.util.seqset. \ No newline at end of file diff --git a/util/seqset.v b/util/seqset.v new file mode 100644 index 0000000000000000000000000000000000000000..fb734c841989a720f968347ea170812c64e67ff8 --- /dev/null +++ b/util/seqset.v @@ -0,0 +1,49 @@ +From mathcomp Require Import ssreflect ssrbool ssrnat eqtype seq fintype. + +Section SeqSet. + + (* Let T be any type with decidable equality. *) + Context {T: eqType}. + + (* We define a set as a sequence that has no duplicates. *) + Record set := + { + _set_seq :> seq T ; + _ : uniq _set_seq (* no duplicates *) + }. + + (* Now we add the ssreflect boilerplate code. *) + Canonical Structure setSubType := [subType for _set_seq]. + Definition set_eqMixin := [eqMixin of set by <:]. + Canonical Structure set_eqType := EqType set set_eqMixin. + Canonical Structure mem_set_predType := mkPredType (fun (l : set) => mem_seq (_set_seq l)). + Definition set_of of phant T := set. + +End SeqSet. + +Notation " {set R } " := (set_of (Phant R)). + +Section Lemmas. + + Context {T: eqType}. + Variable s: {set T}. + + Lemma set_uniq : uniq s. + Proof. + by destruct s. + Qed. + +End Lemmas. + +Section LemmasFinType. + + Context {T: finType}. + Variable s: {set T}. + + Lemma set_card : #|s| = size s. + Proof. + have UNIQ: uniq s by destruct s. + by move: UNIQ => /card_uniqP ->. + Qed. + +End LemmasFinType. \ No newline at end of file