notice and save changes to graph name / stemma identifier (tla/stemmaweb#28)
[scpubgit/stemmatology.git] / analysis / idp_server / findSources.idp
CommitLineData
51650966 1vocabulary V2 {
2 extern vocabulary V
3 IsSource(Manuscript)
4}
5
6theory T2 : V2 {
7 ! x : (~IsSource(x)) => ? y : CopiedBy(y,x) & VariantOf(y) = VariantOf(x).
8}
9
10term NbOfSources : V2 {
11 #{ x : IsSource(x) }
12}
13
14procedure minSources(sample) {
15 stdoptions.groundwithbounds=false
c92f1684 16 stdoptions.symmetrybreaking="static"
51650966 17 idpintern.setvocabulary(sample,V2)
18 return minimize(T2, sample, NbOfSources)[1]
19}
20
21procedure findSources(samples) {
22 local result = {}
23 for _,sample in ipairs(samples) do
24 local model = minSources(sample)
25 if model then
26 table.insert(result,{ getGrouping(model), getSources(model) })
27 else
28 table.insert(result,{ getGrouping(sample), {} })
29 end
30 end
31 return result
32}
33
34procedure getSources(model) {
35 local sources = {}
36 for tuple in tuples(model[V2::IsSource].ct) do
37 local manuscript = tuple[1]
38 table.insert(sources,manuscript)
39 end
40 return sources
41}
42
43