Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
139 commits
Select commit Hold shift + click to select a range
d0bfdbf
Added many-valued context functions and quality of life improvements
Feb 27, 2020
2217cd4
Conexp now with pq-cores
Feb 27, 2020
75f50c0
Merge remote-tracking branch 'original/dev' into dev
Feb 27, 2020
5392693
moved files
Feb 27, 2020
187f72f
renamed namespaces
Feb 27, 2020
482a9e6
moved subconcept function
Feb 27, 2020
b166ff3
fixed comments and removed two duplicate functions
Feb 27, 2020
59ff292
Added Author Field
Feb 28, 2020
2ba13b4
base functionality for smeasures
Mar 3, 2020
e98a0ca
added clustering
Mar 12, 2020
c9a8497
Added naive Object Clustering
Apr 16, 2020
2fa96e3
smeasures now with clustering
Apr 27, 2020
c21ea64
Bugfix and updated tests
Apr 28, 2020
ba0dd1a
Added documentation
Apr 28, 2020
f560254
added missing test
Apr 28, 2020
1f611fb
Fixed bug in object clustering
Apr 29, 2020
f52db81
Added tests
Apr 29, 2020
cb9b5b4
Added interactive scale exploration
May 5, 2020
0fda7a3
added draft for genetic algorithm
hirthjo May 8, 2020
4816a7e
Terminal output
de-narm May 9, 2020
141a144
Terminal output smeasure
de-narm May 9, 2020
9f76545
added genetic algorithm
hirthjo May 11, 2020
64a009b
genetic 2d subctx
hirthjo May 12, 2020
57dd8f6
removed debug
hirthjo May 12, 2020
ef32ff7
refectoring
hirthjo May 13, 2020
fc3625d
repair cluster method
hirthjo May 13, 2020
d297f4b
prepared helper methods for genetic clustering
hirthjo May 13, 2020
0303218
Added Tikz support for measures
de-narm May 13, 2020
9103e64
Added lattice tikz smeasure export
de-narm May 14, 2020
83c6f81
Now with genetic clustering
hirthjo May 18, 2020
c35e9e5
bugfix
hirthjo May 19, 2020
90e8409
genetic part 1 works now
hirthjo May 26, 2020
47d61f2
genetic works Part 2
hirthjo May 26, 2020
cdd4a2a
Code Refactoring
hirthjo May 26, 2020
8b6719c
smart cluster in explor. and decode for genetic
hirthjo May 26, 2020
be99477
Merge pull request #2 from De-Narm/smeasure-vis
hirthjo May 27, 2020
a49a3f9
added io
hirthjo May 27, 2020
a5add48
Fixed and improved Cluster Repair Algorithm
hirthjo May 28, 2020
8a358d4
bigfix
hirthjo May 29, 2020
20ee336
Added Cluster Validity checkers
hirthjo Jul 7, 2020
e318951
Scale-Measure init restructure
hirthjo Oct 26, 2020
88b471f
Scale-Measures Added logical attributes
hirthjo Oct 26, 2020
d509276
Scale-Measures Moved Logical derivations to context.clj
hirthjo Oct 26, 2020
943262f
Added Scale-Measures Framework
hirthjo Dec 10, 2020
097d786
Merge remote-tracking branch 'tom/dev' into HEAD
hirthjo Dec 10, 2020
e91ec90
Merge remote-tracking branch 'hirthjo/dev' into HEAD
hirthjo Dec 10, 2020
e97dc7f
Scale-Measure Apposition
hirthjo Dec 10, 2020
cabed3b
Merge branch 'feature/separation-index' into HEAD
hirthjo Dec 18, 2020
6dd2ec3
Recommend based on an importance measure
hirthjo Dec 18, 2020
1282a08
Added scale-measure exploration and recommendation by importance meas…
hirthjo Dec 21, 2020
8b98c0b
Only meet-irreducible scale-measure attributes
hirthjo Dec 21, 2020
0fa1d6e
Merge pull request #63 from hirthjo/smeasure
tomhanika Jan 8, 2021
a716a6e
More intuitive questionary + Minor Bug fix
hirthjo Jan 8, 2021
de8d882
smeasures: updated questionary
hirthjo Feb 5, 2021
ab1730a
Scaling error
hirthjo May 25, 2021
2101111
Merge remote-tracking branch 'tom/dev' into merge-branch
hirthjo Jul 21, 2021
09515e5
Resolved Merge
hirthjo Jul 21, 2021
4279f01
Added comment for cover method
hirthjo Jul 21, 2021
5ecb55b
Merge pull request #76 from hirthjo/smeasure
tomhanika Aug 2, 2021
6ba0e66
Merge branch 'feature/separation-index' into smeasure
hirthjo Dec 8, 2021
1bc1004
meet and join operator
hirthjo Dec 8, 2021
0983fd2
Bugfix
hirthjo Dec 8, 2021
d9da957
Added a relative scaling errors
hirthjo Jan 25, 2022
66c2ab4
Compute all concepts containing g and their covering
hirthjo Feb 21, 2022
33c4601
Removed prints
hirthjo Feb 22, 2022
04ce29a
Merge remote-tracking branch 'tom/dev' into smeasure
hirthjo Mar 11, 2022
198ddf6
Merge pull request #83 from hirthjo/smeasure
hirthjo Mar 11, 2022
c12a874
Ordinal Motifs
May 16, 2023
e59a79c
reduce computational time for candidates-by-subset-heredity and ident…
May 22, 2023
3b9671d
Merge branch 'dev' into ordinal-motifs
Jun 2, 2023
ba502d1
Added Function for Theorem 55.
JannikNordmeyer Jun 25, 2023
7a710cb
Added interordianlly-measurable Function.
JannikNordmeyer Jun 28, 2023
7c0a4b4
Added accepts-scale Function.
JannikNordmeyer Jun 28, 2023
74457a5
Merge branch 'ordinal-motifs' into smeasure
JannikNordmeyer Jun 28, 2023
cb98ff3
Merge pull request #1 from JannikNordmeyer/smeasure
JannikNordmeyer Jun 28, 2023
666de45
Implemented ordinal Variant.
JannikNordmeyer Jun 28, 2023
3e6a802
Implemented ordinal case for accepts-scale method.
JannikNordmeyer Aug 8, 2023
caca564
Started implementing interordianl version for accepts-scale function.
JannikNordmeyer Aug 10, 2023
8594e2c
Implemented interordinal version of accepts-scale function.
JannikNordmeyer Aug 11, 2023
9ee653a
Preliminary Implementation for :crown Version of accepts-scale Function.
JannikNordmeyer Aug 20, 2023
7ddcb3e
Improved Implementation for crown variant of accepts-scale Function.
JannikNordmeyer Aug 22, 2023
563b9ae
Implemented Methods for Generating Distributive Lattice from three El…
JannikNordmeyer Sep 7, 2023
37a7af7
Added Functions for Libkin Decomposition.
JannikNordmeyer Sep 8, 2023
ea290b4
Fully Implemented Libkin Decomposition.
JannikNordmeyer Sep 13, 2023
b148648
Outsourced Functions. Implemented full Lattice Decomposition.
JannikNordmeyer Sep 20, 2023
9f564e3
Cleanup and Documentation.
JannikNordmeyer Sep 21, 2023
af727d1
Finished Documentation on Libkin Decomposition.
JannikNordmeyer Sep 21, 2023
a2c62e9
Added Test for Libkin Decomposition.
JannikNordmeyer Sep 21, 2023
307294a
Implemented Poset Product.
JannikNordmeyer Sep 26, 2023
ad157e0
Implemented Product Functions for Posets and Lattices. Improved Tests…
JannikNordmeyer Sep 27, 2023
d123e7f
Added Libkin Decomposition Documentation to Index.
JannikNordmeyer Sep 28, 2023
7618e67
Improved Documentation.
JannikNordmeyer Oct 4, 2023
709ff01
Fixed Imlementation of Complement Computation.
JannikNordmeyer Oct 28, 2023
8756826
Visual Edit to Documentation.
JannikNordmeyer Nov 1, 2023
c46ce67
Removed Redundant Functions.
JannikNordmeyer Nov 2, 2023
bd43ec5
Added Decompositions Namespace to Documentation.
JannikNordmeyer Nov 2, 2023
8a0b525
Implemented Distributive Exploration Algorithm.
JannikNordmeyer Nov 26, 2023
9074412
Computed Distributive Sublattice.
JannikNordmeyer Nov 27, 2023
c3488d1
Implemented Methods for Generating Distributive Lattice from three El…
JannikNordmeyer Sep 7, 2023
1075667
Added Functions for Libkin Decomposition.
JannikNordmeyer Sep 8, 2023
2a497ab
Fully Implemented Libkin Decomposition.
JannikNordmeyer Sep 13, 2023
51371fd
Outsourced Functions. Implemented full Lattice Decomposition.
JannikNordmeyer Sep 20, 2023
5091bb6
Cleanup and Documentation.
JannikNordmeyer Sep 21, 2023
ba3ba7a
Finished Documentation on Libkin Decomposition.
JannikNordmeyer Sep 21, 2023
c152a1c
Added Test for Libkin Decomposition.
JannikNordmeyer Sep 21, 2023
e4412cd
Implemented Poset Product.
JannikNordmeyer Sep 26, 2023
b80578d
Implemented Product Functions for Posets and Lattices. Improved Tests…
JannikNordmeyer Sep 27, 2023
b9a9b05
Added Libkin Decomposition Documentation to Index.
JannikNordmeyer Sep 28, 2023
37f8bdb
Improved Documentation.
JannikNordmeyer Oct 4, 2023
977fcbd
Fixed Imlementation of Complement Computation.
JannikNordmeyer Oct 28, 2023
13e801d
Visual Edit to Documentation.
JannikNordmeyer Nov 1, 2023
df1a5b6
Removed Redundant Functions.
JannikNordmeyer Nov 2, 2023
60b5f0d
Added Decompositions Namespace to Documentation.
JannikNordmeyer Nov 2, 2023
80966f8
New test statements
JannikNordmeyer Feb 27, 2024
646e9e9
Corrected Implementation for Computing Neutral Elements.
JannikNordmeyer Mar 1, 2024
6bbbdef
Documentation Correction.
JannikNordmeyer Jan 22, 2024
49c1c5a
Corrected Computation of Neutral Elements.
JannikNordmeyer Mar 6, 2024
32c421f
Removed Unneeded Function.
JannikNordmeyer Mar 7, 2024
d7d3c75
Methods for completing a lattice to a distributive lattice
hirthjo Mar 27, 2024
8d4635e
Added Combinatorial Product
JannikNordmeyer May 13, 2024
76a8da0
Added Experimental Functions and Testing Data.
JannikNordmeyer Jun 6, 2024
3c92289
Cleanup for Verification Functions.
JannikNordmeyer Jun 7, 2024
279bd3b
Merge branch 'dev' into distributivity-completion
hirthjo Jun 13, 2024
eeecb4a
fixed boring imports
hirthjo Jun 13, 2024
7163afb
Added Test Cycle
JannikNordmeyer Jun 29, 2024
a360abc
Fixed Implementation of Decomposable filter Algorithm.
JannikNordmeyer Jul 7, 2024
ed7dcf3
Merge branch 'distributivity-completion' into libkinprojekt
JannikNordmeyer Jul 15, 2024
65388be
Restored Functionality
JannikNordmeyer Jul 18, 2024
03b861a
Added Algorithm for Maximal Intervals.
JannikNordmeyer Jul 22, 2024
9789b7f
Updated Algorithm for Decomposable Intervals.
JannikNordmeyer Jul 24, 2024
7b4dcbe
Merge branch 'libkinprojekt' into libkin-decomp
JannikNordmeyer Nov 21, 2024
58c0d68
Started Cleanup.
JannikNordmeyer Nov 21, 2024
8a47087
Updated Test.
JannikNordmeyer Nov 23, 2024
2c0c803
Merge branch 'master' into libkin-decomp
JannikNordmeyer Nov 23, 2024
f658e61
Removed Unneeded Namespace.
JannikNordmeyer Nov 23, 2024
8433096
Added Documentation.
JannikNordmeyer Mar 17, 2025
5107047
Minor Documentation Fix.
JannikNordmeyer Mar 17, 2025
027e1d6
Merge branch 'master' into libkin-decomp
JannikNordmeyer Mar 17, 2025
3b74c08
Merge branch 'dev' into libkin-decomp
tomhanika Apr 29, 2025
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
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ much more.
8. [Computing Traces in Contexts](doc/code/trace-context.clj)
9. [Counting Quasiorders](doc/code/quasiorders.clj)
10. [Rudolph's Algorithm for Computing Bases](doc/code/rudolph_computation.clj)
11. [Discovering Causal Implications](doc/Causal-Implications.org)
11. [Libkin Decompositions](doc/LibkinDecomposition.org)
12. [Direct Product Decompositions](doc/DirectProductDecompositions.org)
5. Advanced Topics
1. [pq-cores](doc/pq-cores-in-Formal-Contexts.md)
2. [REST-API Usage](doc/REST-API-usage.md)
Expand Down
123 changes: 123 additions & 0 deletions doc/DirectProductDecompositions.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
#+property: header-args :wrap src text
#+property: header-args:text :eval never

* Direct Product Decompositions

Based on the ~Libkin Decomposition~ formalized by Leonid Libkin, a variety of approaches for decomposing concept lattices were proposed, some of which are implemented in ~conexp-clj~.

For a detailed description of these methods, consult [[https://doi.org/10.17170/kobra-2025021510916][Direct Product Decompositions of Concept Lattices]]:

#+begin_src clojure
(use 'conexp.fca.decompositions)
(def ctx (make-context #{"black" "red" "green" "blue" "yellow" "violet" "cyan" "white"}#{"R" "G" "B"} #{["red" "R"] ["green" "G"] ["blue" "B"] ["yellow" "R"] ["yellow" "G"] ["violet" "R"] ["violet" "B"] ["cyan" "G"] ["cyan" "B"] ["white" "R"] ["white" "G"] ["white" "B"]}))
(def lat (concept-lattice ctx))
(draw-lattice lat)
#+end_src


[[./images/rgb-lattice.png]]


The decomposition pairs of a lattice can be computed using the method ~libkin-decomposition-pairs~:

#+begin_src clojure :exports both
(def pairs (libkin-decomposition-pairs lat))
#+end_src

#+RESULTS:
#+begin_src text
([[#{"cyan" "white"} #{"G" "B"}]
[#{"white" "violet" "yellow" "red"} #{"R"}]]
[[#{"white" "violet" "yellow" "red"} #{"R"}]
[#{"cyan" "white"} #{"G" "B"}]]
[[#{"white" "violet"} #{"R" "B"}]
[#{"cyan" "white" "yellow" "green"} #{"G"}]]
[[#{"blue" "cyan" "white" "violet" "yellow" "green" "red" "black"}
#{}]
[#{"white"} #{"G" "R" "B"}]]
[[#{"white" "yellow"} #{"G" "R"}]
[#{"blue" "cyan" "white" "violet"} #{"B"}]]
[[#{"white"} #{"G" "R" "B"}]
[#{"blue" "cyan" "white" "violet" "yellow" "green" "red" "black"}
#{}]]
[[#{"cyan" "white" "yellow" "green"} #{"G"}]
[#{"white" "violet"} #{"R" "B"}]]
[[#{"blue" "cyan" "white" "violet"} #{"B"}]
[#{"white" "yellow"} #{"G" "R"}]])
#+end_src

These can now be used to compute either a ~downset decomposition~, which is equivalent to the libkin decomposition, or a ~downset decomposition~.
We will compute one each using the decomposition pari ~[[#{"cyan" "white"} #{"G" "B"}] [#{"white" "violet" "yellow" "red"} #{"R"}]]~:

#+begin_src clojure :exports both
(def downsets (downset-decomposition-lattices lat [[#{"cyan" "white"} #{"G" "B"}] [#{"white" "violet" "yellow" "red"} #{"R"}]]))
(draw-lattice (first downsets))
(draw-lattice (second downsets))
#+end_src

[[./images/downset-lattices.png]]


#+begin_src clojure :exports both
(def upsets (upset-decomposition-lattices lat [[#{"cyan" "white"} #{"G" "B"}] [#{"white" "violet" "yellow" "red"} #{"R"}]]))
(draw-lattice (first upsets))
(draw-lattice (second upsets))
#+end_src

[[./images/upset-lattices.png]]

These pairs of lattices can now be reconstructed into their original lattices by applying the ~downset product~ or ~uzpset product~, respectively:

#+begin_src clojure :exports both
(downset-product (first downsets) (second downsets))
(upset-product (first upsets) (second upsets))
#+end_src

Whether a lattice has non-trivial decomposition pairs may be verified using the ~decomposable?~ method.


It may be useful to visualize all possible upset decomposition of a single concept lattice.
To this end, the ~direct decomposition lattice~ of a concept lattice may be computed:

[[./images/decomp-lattice.png]]

#+begin_src clojure :exports both
(def decomp-lat (direct-decomposition-lattice lat))
(draw-lattice decomp-lat)
#+end_src

It is unfortunately not currently possible to directly visualize the concept lattices that form the elements of the ~direct decomposition lattice~:

[[./images/decomp-lattice-drawing.png]]

This lattice can also be computed in terms of the contexts of its constituent lattices using the ~ctx-decomposition-lattice~ method.

This ~direct decomposition lattice~ can slo be used to determine the ~upset prime factorization~ of a concept lattice; a set of indecomposable concept lattices whose upset product is the original concept lattice:

#+begin_src clojure :exports both
(def factors (prime-factorization lat))
(draw-lattice (first factors))
(draw-lattice (second factors))
(draw-lattice (last factors))
#+end_src

[[./images/prime-factors.png]]


In practice, non-trivial direct product decomposition are rare. Therefore it is useful to consider substructures of concept lattices that may be decomposable.
~conexp-clj~ offers two variants of such an algorithm.

The method ~maximally-decomposable-filters~ returns all inclusion-maximal principal filters of a concept lattice, that have non-trivial upset decompostions.

An example using the ~bodies-of-water~ context:

[[./images/max-decomp-filters.png]]

Alternatively, all maximally decomposable intervals may be computed using the ~maximally-decomposable-intervals~ method:

[[./images/max-decomp-intervals.png]]

#+begin_src clojure :exports both
(maximally-decomposable-filters lat)
(maximally-decomposable-intervals lat)
#+end_src
87 changes: 87 additions & 0 deletions doc/LibkinDecomposition.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#+property: header-args :wrap src text
#+property: header-args:text :eval never

* Libkin Decomposition

~conexp-clj~ allows for the computation of Libkin Decompositions of lattices.
For an explanation of the concept consult "Direct product decompositions of lattices, closures and relation schemes" by Leonid Libkin

Some of the following functions require the ~decompositions~ namespace:


#+begin_src clojure
(use 'conexp.fca.decompositions)
#+end_src

(use 'conexp.fca.decompositions)

We will consider the following lattice as an example:

#+begin_src clojure :exports both
(def ctx (read-context "testing-data/drive_concepts_for_motorcars.cxt"))
(def lat (concept-lattice ctx))
#+end_src

[[./images/car-lattice.png]]

A Libkin decomposition of a lattice L is a pair of sublattices of L, whose product is isomorphic to L.
Libkin decompositions are each induced by a decomposition pair, a neutral element in L and its Complement.

All decomposition pairs of the lattice can be computed using the method ~libkin-decomposition-pairs~:

#+begin_src clojure :exports both
(def pairs (libkin-decomposition-pairs lat))
#+end_src

#+RESULTS:
#+begin_src text
([[#{"Conventional" "All-wheel" "Rear-wheel" "Mid-engine"} #{"Dl+"}]
[#{"Front-wheel"}
#{"E+" "C-l" "De+" "C-vl" "E++" "Dl-" "S-u" "R+" "M+" "R++"}]]
[[#{}
#{"E+" "C-l" "E-" "C-h" "De+" "Dl+" "C-vl" "E++" "S-u/n" "Dl++"
"Dl-" "M++" "S-u" "R+" "S-n" "S-o" "De-" "De++" "M+" "M--" "R--"
"C-m" "M-" "R++" "E--"}]
[#{"Conventional" "All-wheel" "Rear-wheel" "Mid-engine"
"Front-wheel"}
#{}]]
[[#{"Conventional" "All-wheel" "Rear-wheel" "Mid-engine"
"Front-wheel"}
#{}]
[#{}
#{"E+" "C-l" "E-" "C-h" "De+" "Dl+" "C-vl" "E++" "S-u/n" "Dl++"
"Dl-" "M++" "S-u" "R+" "S-n" "S-o" "De-" "De++" "M+" "M--" "R--"
"C-m" "M-" "R++" "E--"}]]
[[#{"Front-wheel"}
#{"E+" "C-l" "De+" "C-vl" "E++" "Dl-" "S-u" "R+" "M+" "R++"}]
[#{"Conventional" "All-wheel" "Rear-wheel" "Mid-engine"} #{"Dl+"}]])
#+end_src

Computing the order ideal of both entries of the pair yields the two sublattices forming the decomposition.

The lattices implied by the decomposition through a specific decomposition pair can be exlicitely generated using ~libkin-decomposition-lattices~:

#+begin_src clojure :exports both
(def lattice-pair (libkin-decomposition-lattices lat [[#{"Conventional" "All-wheel" "Rear-wheel" "Mid-engine"} #{"Dl+"}]
[#{"Front-wheel"}
#{"E+" "C-l" "De+" "C-vl" "E++" "Dl-" "S-u" "R+" "M+" "R++"}]]))
#+end_src

These lattices may be visualized as described in Concept-Lattices.org .

#+begin_src text
(draw-lattice (first lattice-pair))
(draw-lattice (last lattice-pair))
#+end_src

[[./images/decomposed-lattice1.png]]
[[./images/decomposed-lattice2.png]]

#+begin_src text
(def prod-lat (lattice-product (first lattice-pair) (last lattice-pair)))
(draw-lattice prod-lat)
#+end_src

The product of these lattices yields a lattice isomorphic to L:

[[./images/prod-lattice.png]]
Binary file added doc/images/car-lattice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/cube-lattice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/decomp-lattice-drawing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/decomp-lattice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/decomposed-lattice1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/decomposed-lattice2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/downset-lattices.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/max-decomp-filters.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/max-decomp-intervals.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/prime-factors.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/prod-lattice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/rgb-lattice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/upset-lattices.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading