Extra Shared Entanglement Reduces Memory Demand in Quantum Convolutional Coding

Extra Shared Entanglement Reduces Memory Demand in Quantum Convolutional Coding

Abstract

We show how extra entanglement shared between sender and receiver reduces the memory requirements for a general entanglement-assisted quantum convolutional code. We construct quantum convolutional codes with good error-correcting properties by exploiting the error-correcting properties of an arbitrary basic set of Pauli generators. The main benefit of this particular construction is that there is no need to increase the frame size of the code when extra shared entanglement is available. Then there is no need to increase the memory requirements or circuit complexity of the code because the frame size of the code is directly related to these two code properties. Another benefit, similar to results of previous work in entanglement-assisted convolutional coding, is that we can import an arbitrary classical quaternary code for use as an entanglement-assisted quantum convolutional code. The rate and error-correcting properties of the imported classical code translate to the quantum code. We provide an example that illustrates how to import a classical quaternary code for use as an entanglement-assisted quantum convolutional code. We finally show how to “piggyback” classical information to make use of the extra shared entanglement in the code.

entanglement-assisted quantum convolutional coding, quantum error correction, quantum communication
pacs:
03.67.Hk, 03.67.Pp
1

2008 LABEL:FirstPage1 LABEL:LastPage10

I Introduction

Quantum convolutional coding is a useful technique for encoding a stream of quantum information before sending it over a noisy quantum communication channel Ollivier and Tillich (2003, 2004); Grassl and Rötteler (2006a, b); Grassl and Rötteler (2007); Forney and Guha (2005); Forney et al. (2007); Aly et al. (2007a, b). Ollivier and Tillich started the investigations into the theory of quantum convolutional coding Ollivier and Tillich (2003, 2004) and many authors have since contributed to a general theory of quantum convolutional coding Grassl and Rötteler (2006a, b); Grassl and Rötteler (2007); Forney and Guha (2005); Forney et al. (2007); Aly et al. (2007a, b).

Quantum convolutional codes have several key benefits. The performance/complexity trade-off for a quantum convolutional code is superior to that of a block code that encodes the same number of information qubits Forney et al. (2007). Some benefits of their classical counterparts Johannesson and Zigangirov (1999) carry over to quantum convolutional codes—e.g., the encoding circuits for both quantum and classical convolutional codes have a periodic structure.

Entanglement-assisted quantum error-correcting codes exploit entanglement shared between sender and receiver Brun et al. (2006). The entanglement-assisted communication paradigm assumes that a sender and receiver share a set of noiseless ebits, the sender can use her half of these ebits in the encoding procedure, and the receiver’s half of the shared ebits remain noiseless throughout communication. The benefit of entanglement-assisted stabilizer codes is that the sender and receiver can exploit the error-correcting properties of an arbitrary set of Pauli generators rather than restrict themselves to a commuting set. Another benefit is that entanglement boosts the quantum communication rate of the entanglement-assisted quantum code constructed from either two classical binary codes or one classical quaternary code.

We have recently constructed entanglement-assisted quantum convolutional codes that admit a Calderbank-Shor-Steane (CSS) structure Wilde and Brun (2007) and others that admit a more general structure Wilde and Brun (2008a). These papers develop several ways of encoding and decoding entanglement-assisted quantum convolutional codes with operations that are both finite depth and infinite depth. The upshot of these constructions is that we can import two arbitrary classical binary convolutional codes for use as a CSS entanglement-assisted quantum convolutional code Wilde and Brun (2007) or we can import an arbitrary classical quaternary convolutional code for use as an entanglement-assisted quantum convolutional code Wilde and Brun (2008a). The rates and error-correcting properties of the classical codes translate directly to the quantum code.

In Ref. Wilde and Brun (2008a), we showed how to accomodate entangled bits in an entanglement-assisted quantum convolutional code by increasing the code’s frame size. (A quantum convolutional code partitions quantum data into uniformly-sized frames consisting of ebits, ancilla qubits, and information qubits that a periodic encoding circuit acts on.) Increasing the frame size of the code is undesirable because it increases the complexity of the encoding and decoding circuits and demands a larger memory for the code.

In this paper, we show that there is no need to increase the frame size of the entanglement-assisted quantum convolutional code if one makes use of extra shared entanglement. The result in Ref. Wilde and Brun (2008a) and our findings in this paper seem to point to a trade-off between efficient use of entanglement and that of circuit resources for non-CSS entanglement-assisted quantum convolutional codes. We again focus on more general entanglement-assisted quantum convolutional codes that do not have the CSS structure. The outcome of this work is that we can import an arbitrary classical quaternary convolutional code for use as an entanglement-assisted quantum convolutional code with the benefit that it is not necessary to increase the frame size of the code. The drawback of the technique in this paper is that it does not make the most efficient use of entanglement.

Ii Main Theorem

The proof of our main theorem below outlines how to encode a stream of information qubits, ancilla qubits, and shared ebits so that the encoded qubits have the error-correcting properties of an arbitrary set of Paulis. The receiver may employ an error estimation algorithm such as Viterbi decoding Viterbi (1967) to determine the most likely errors that the noisy quantum communication channel induces on the encoded stream. We then show how to decode the encoded qubit stream so that the information qubits become available at the receiving end of the channel.

The encoding circuits in the proof of our theorem employ both finite-depth and infinite-depth operations. The decoding circuits employ finite-depth operations only. Finite-depth operations take a finite-weight stabilizer to one with finite weight. Infinite-depth operations take some finite-weight stabilizer generators to ones with infinite weight.

Infinite-depth operations can lead to catastrophic error propagation Ollivier and Tillich (2003, 2004); Grassl and Rötteler (2006a); Wilde and Brun (2007). In our proof below, we restrict infinite-depth operations to act on qubits before sending them over the noisy channel. Catastrophic error propagation does not occur under the ideal circumstance when the operations in the encoding circuit are noiseless.

Theorem 1 below begins with a “quantum check matrix” that consists of a set of Pauli sequences with desirable error-correcting properties Wilde and Brun (2007). This quantum check matrix represents an arbitrary basic set of Pauli generators and thus does not necessarily correspond to a commuting stabilizer. The proof of the theorem shows how to incorporate ebits so that the sender realizes the same quantum check matrix for her qubits and the sender and receiver’s set of generators form a valid commuting stabilizer.

The entries of the quantum check matrix in Theorem 1 are binary polynomials. The usual way to represent a quantum code is with a tensor product of Pauli matrices, but it is more convenient for our purposes to perform all manipulations with matrices of binary polynomials rather than with tensor products of Pauli matrices (see Refs. Ollivier and Tillich (2004); Grassl and Rötteler (2006b, a); Forney et al. (2007); Wilde et al. (2007); Wilde and Brun (2007) for details of this isomorphism). Consider the quantum check matrix in Theorem 1. The matrix on the left (right) side of the vertical bar includes binary polynomials corresponding to () Pauli operators. Also, the delay operator gives a simple way of obtaining all the generators that the quantum check matrix represents. Multiplication of any of the rows in the matrix by any power of gives a corresponding generator.

We perform two types of manipulations on the below quantum check matrix: row operations and column operations. Row operations do not change the error-correcting properties of the code. Column operations correspond to quantum circuit elements in the shift-invariant Clifford group Grassl and Rötteler (2006b, a) and do not change the shifted symplectic product Wilde et al. (2007); Wilde and Brun (2007) between the rows of the quantum check matrix. Both row and column operations are crucial for arriving at the proper decomposition of the below quantum check matrix.

Theorem 1

Suppose we would like to exploit the error-correcting properties of the generators in the following quantum check matrix:

where is of full rank and does not necessarily form a commuting stabilizer. Then an entanglement-assisted quantum convolutional code exists that has the same error-correcting properties as the above quantum check matrix where rank (an code is one that encodes information qubits per frame into “channel” qubits per frame while consuming ebits per frame Brun et al. (2006); Wilde and Brun (2007); Wilde and Brun (2008a)).

Proof. The first part of the proof in (1-13) involves decomposing the above check matrix using CNOT and SWAP gates chosen according to the Smith algorithm Johannesson and Zigangirov (1999) (it employs intermediate Hadamard gates as well). The resulting check matrix in (13) is then no longer decomposable using finite-depth operations only. We then start with a matrix representing unencoded ebits and show how to perform infinite-depth encoding operations in order to obtain part of the check matrix in (13). The last part of the proof shows how to decode the information qubits properly using finite-depth operations only. The order of the steps in this proof is similar to the order of the steps in Refs. Wilde and Brun (2007); Wilde and Brun (2008a), but the details of the proof are different. The details of performing column operations with CNOT and Hadamard gates, and infinite-depth operations corresponding to multiplying by rational polynomials, are also in those papers.

Suppose the Smith form Johannesson and Zigangirov (1999) of is as follows:

(1)

where is , is , is an diagonal matrix whose entries are powers of , and is a diagonal matrix whose entries are arbitrary polynomials. Perform the row operations in and the column operations in on . The quantum check matrix  becomes

(2)

where . Suppose is the first columns of and is the next columns of so that the quantum check matrix is as follows:

(3)

Perform Hadamard gates on the last qubits so that the quantum check matrix becomes

(4)

where

(5)

Perform CNOT operations from the first qubits to the last qubits to clear the entries in . The quantum check matrix becomes

(6)

The Smith form of is as follows:

(7)

where is , is , and is a  diagonal matrix whose entries are polynomials. The Smith form of  is full rank because the original quantum check matrix  is full rank. Perform the row operations in and the column operations in . The quantum check matrix becomes

(8)

where

(9)
(10)
(11)

Perform a modified version of the Smith algorithm to reduce the matrix to a lower triangular form Wilde and Brun (2007). This modified algorithm uses only column operations to transform

(12)

where is and the null matrix is . The quantum check matrix becomes

(13)

We have now completed the decomposition of the quantum check matrix with column and row operations.

We turn to showing how to encode a certain quantum check matrix that proves to be useful in encoding the above quantum check matrix. Consider the following quantum check matrix:

(14)

where and are from the matrix in (13) and each of them, the identity matrix, and the null matrices have dimension .

We use a method for encoding the quantum check matrix in (14) similar to the method outlined in Ref. Wilde and Brun (2007) for the second class of CSS entanglement-assisted quantum convolutional codes. We begin with a set of ebits and information qubits. The following matrix stabilizes the ebits:

(15)

where Bob has the qubits in the leftmost column of each submatrix, Alice has the qubits in the right two columns, and each block is . The following matrix represents the logical operators for the information qubits, and gives a useful way of tracking the information qubits while processing them:

(16)

Tracking the information-qubit matrix helps to confirm that the information qubits decode properly at the receiver’s end Wilde and Brun (2007).

We now track both the above stabilizer and the information-qubit matrix as they progress through some encoding operations. Alice performs CNOT gates from her first qubits to her next qubits. These gates multiply the middle columns of the “X” matrix by and add the result to the last columns, and multiply the last columns of the “Z” matrix by and add the result to the last columns. The stabilizer becomes

(17)

and the information-qubit matrix becomes

(18)

Alice performs infinite-depth operations on her first qubits corresponding to the rational polynomials , , in . These operations multiply the middle columns of the “Z” matrix by and multiply the middle columns of the “X” matrix by . The stabilizer matrix becomes

(19)

and the information-qubit matrix becomes

(20)

Alice’s part of the above stabilizer matrix is equivalent to the quantum check matrix in (14) by row operations (premultiplying the first set of rows by .)

We now show how to encode the quantum check matrix in (13) using ebits, ancilla qubits, and information qubits. We employ the encoding technique for the submatrix listed above in (15-20) and use some other techniques as well. Suppose that we have the following matrix that stabilizes a set of ebits per frame, ancilla qubits per frame, and information qubits per frame:

(21)

The first and third sets of rows have rows and correspond to ebits per frame, the second and fourth sets of rows have rows and correspond to ebits per frame, and the last set of rows corresponds to ancilla qubits per frame. The above matrix has columns on both the “Z” and “X” side so it stabilizes information qubits per frame. Bob possesses the first qubits and Alice possesses the next qubits. Alice performs the encoding operations in (15-20) to get the following stabilizer:

(22)

where .

We perform several row operations to get the quantum check matrix in (13). Premultiply the middle set of rows by (one actually does not have to do this row operation—the result is a “subcode” of the original code Grassl and Rötteler (2006a)). Premultiply the last set of rows by and add the result to the set of rows above the last set. Premultiply the last set of rows by (one also does not have to do this row operation and the result is again a subcode). Finally, premultiply the first two sets of rows by

and add the result to the last three sets of rows. The “Z” side of the quantum check matrix becomes

(23)

and the “X” side becomes

(24)

The last three rows of Alice’s part of the above quantum check matrix are equivalent to the quantum check matrix in (13). The first two sets of rows represent extra shared entanglement that Alice and Bob use to resolve the anticommutativity present in the original set of generators. Alice performs all finite-depth encoding operations (column operations) in (1-13) in reverse order to obtain the desired quantum check matrix in the statement of the theorem.

Decoding first consists of performing all the operations in (1-13). We now illustrate a way to decode the stabilizer in (19) and information-qubit matrix in (20) so that the information qubits appear at the output of the decoding circuit. Bob performs CNOT gates from the first set of qubits to the third set of qubits corresponding to the entries in . The stabilizer becomes

(25)

and the information-qubit matrix becomes

(26)

Bob finishes decoding at this point because we can equivalently express the information-qubit matrix as follows:

(27)

by multiplying the first rows of the stabilizer by and adding to the first rows of the information-qubit matrix. The information qubits are available at the receiving end of the channel because the above information-qubit matrix is equivalent to the original one in (16).

The above code is an entanglement-assisted code because the code uses a noisy quantum communication channel times per frame to send information qubits per frame. The parameter rank because the matrices and determine the rank of the matrix by the Smith algorithm Johannesson and Zigangirov (1999).   

Iii Example

We present an example of a classical quaternary code over that we import for use as an entanglement-assisted quantum convolutional code Wilde et al. (2007):

(28)

The above code is a convolutional version of the classical quaternary block code from Ref. Brun et al. (2006). We multiply the above generator by and as prescribed in Refs. Calderbank et al. (1998); Forney et al. (2007) and use the following map,

(29)

to obtain the following two Pauli generators:

(30)

We write the above two generators as a quantum check matrix:

(31)

We now show how entanglement helps in implementing the above code as an entanglement-assisted quantum convolutional code. We encode two qubits per frame with the help of two ebits. The stabilizer matrix for the unencoded qubit stream is as follows:

(32)

Rows one and three correspond to one ebit and rows two and four correspond to the other. Multiply row one by and add the result to row three, multiply row one by and add the result to row four, and multiply row two by and add the result to row four. These row operations give the following equivalent stabilizer:

(33)
Figure 1: (Color online) An online encoding circuit for an entanglement-assisted quantum convolutional code. The receiver Bob possesses the first two qubits in the two ebits and the sender Alice possesses the second two qubits in the two ebits. The sender encodes two information qubits per frame with the help of her half of the two ebits.

Figure 1 illustrates the operations that transform the unencoded stabilizer to the encoded one in an online encoding circuit (See Refs. Grassl and Rötteler (2006a); Wilde and Brun (2007) for details of translating gate-level operations to polynomial operations on the stabilizer matrix). The final stabilizer is as follows:

where and . Compare Alice’s generators in the last two rows of the above matrix to the quantum check matrix in (31). We have constructed a code with the same error-correcting properties because these two matrices are equivalent. The above code is a entanglement-assisted convolutional code because it encodes two information qubits and consumes two ebits for every four uses of the noisy quantum channel.

It is interesting to compare the above example to the similar example in Section VII of Ref. Wilde and Brun (2008a). In that example, we expanded the generators by a factor of two and were able to encode six information qubits and consume two ebits for every eight uses of the channel. The code in Ref. Wilde and Brun (2008a) makes a more efficient use of entanglement at the price of a doubling of the frame size (and thus a doubling of the memory requirements). In addition, the code in Ref. Wilde and Brun (2008a) requires infinite-depth operations, but the code in the above example uses finite-depth operations only.

Iv Classical Enhancement

It is possible to “piggyback” classical information along with the extra entanglement in a fashion similar to the superdense coding effect Bennett and Wiesner (1992). One can then decide to send classical information only or combine the transmitted classical information with extra entanglement to teleport more qubits Bennett et al. (1993). We mention that Refs. Kremsky et al. (2008); Wilde and Brun (2008b) offer a different way of piggybacking classical information along with an entanglement-assisted code.

Consider the stabilizer in (23-24). Recall that the first two sets of rows correspond to “extra entanglement” generators and the second two sets of rows are their corresponding generators. It is only clear to us that this piggybacking effect can work for rows that are not affected by infinite-depth operations—the first and third sets of rows in (23-24).

Consider the first and third sets of rows in (23-24):

(34)

where we omit the last four sets of columns of zeros and label the respective submatrices of and as and . Consider the following set of operators:

(35)

The rows in (35) anticommute with the first set of rows in (34) but commute with the second set of rows in (34) according to the shift symplectic product Wilde et al. (2007); Wilde and Brun (2007). Furthermore, the rows in (35) anticommute with the first set of rows in (34) in such a way that the result of the shifted symplectic product is the identity matrix because

The operators in (35) therefore give Alice a way to send extra classical bits in analogy to superdense coding (we define at the beginning of the proof of the main theorem). Alice sets any of the bits to “1” by applying the corresponding “encoded” version of the operator in (35) (one can determine the encoded version of the operator by applying the rest of the column operations of the encoding circuit to the operator). The fact that the generators in (35) commute with the second set of rows in (34) guarantees that encoding this extra classical information does not “throw off” the operation of the code for error correction. Bob simply has to measure the encoded version of the operators corresponding to the first set of rows in (34) to determine the values of the  classical bits.

One can use this classical enhancement just to send classical information and the result is an classically-enhanced entanglement-assisted convolutional code according to the notation of Ref. Kremsky et al. (2008). Alternatively, one can use the classical communication and extra entanglement to teleport more quantum information Bennett et al. (1993). Teleporting then gives an entanglement-assisted convolutional code.

We mention that there is no “free lunch” with this classical enhancement technique. Exploiting the technique reduces number of errors that the code corrects. The encoded versions of the operators in (35) are actually a basis for the extra errors that the code corrects. Bob measures the encoded version of the operators corresponding to the first set of rows in (34) to retrieve the syndrome bits for these errors. It may be useful to correct these additional errors, but typically, one begins with a given set of generators that have desirable error-correcting properties. If one chooses to construct the entanglement-assisted quantum code with the techniques developed in the previous section, the resulting quantum code possesses the original desired error-correcting properties. One can then choose whether to exploit the extra entanglement for extra error-correcting capability or for classical enhancement.

iv.1 Classical Enhancement of the Example

We show how to enhance the example so that it also sends classical information. Consider the following two operators:

The first row anticommutes with the first row in (33) and commutes with all other rows in (33). The second row anticommutes with the second row in (33) and commutes with all other rows in (33). These commutation relations imply that the above operators are useful for encoding classical information in a superdense-coding-like fashion. These operators encode two classical bits into the code and make use of the first two rows in (33) instead of just “wasting” them. Measuring the first two rows in (33) reveals the values of the two classical bits. We can determine the encoded versions of these “classical-information-encoding” operators by tracing how the operators change in the Heisenberg picture through the rest of the encoding circuit. The result is a classically-enhanced entanglement-assisted convolutional code.

Alternatively, we can use these two classical bits and consume one ebit to teleport an additional information qubit. This technique produces a entanglement-assisted convolutional code.

V Conclusion

We have constructed a theory of entanglement-assisted quantum convolutional coding for codes that do not have the CSS structure. The method of this paper uses entanglement less efficiently than the protocol in Ref. Wilde and Brun (2008a), but it does not require expanding a set of generators and therefore does not require a heuristic convergence argument as do the codes in Ref. Wilde and Brun (2008a). The “extra entanglement” method results in encoding and decoding circuits that act on smaller numbers of qubits than the circuits in Ref. Wilde and Brun (2008a) and therefore requires less memory and circuit complexity. It should be of interest to find solutions in between the entanglement-efficient codes Wilde and Brun (2008a) and the entanglement-inefficient codes discussed in this paper.

It would be ideal to know the exact trade-off between entanglement for the codes in this paper and the entanglement for the codes in Ref. Wilde and Brun (2008a), but we cannot establish this relationship right now because it is still an open question to determine the exact amount of entanglement that the codes in Ref. Wilde and Brun (2008a) require. Also, it would be ideal to know the trade-off between the frame size for codes in this paper and the frame size for codes in Ref. Wilde and Brun (2008a). Note that it also remains an open question to determine the frame size for codes in Ref. Wilde and Brun (2008a) because we have not yet shown the exact step at which the algorithm from Ref. Wilde and Brun (2008a) converges.

It may be possible to avoid either using extra entanglement as outlined in this paper or expanding the generator set as outlined in Ref. Wilde and Brun (2008a); we have no proof that these constructions are optimal. The fact that CSS codes do not need these methods provides some evidence that it may be possible Wilde and Brun (2007). However, after extensive exploration we have not found such a better technique, making us believe that it is unlikely.

The authors thank Hari Krovi, Markus Grassl, and Martin Rötteler for stimulating discussions. MMW acknowledges support from NSF Grant 0545845 and the National Research Foundation & Ministry of Education, Singapore, and TAB acknowledges support from NSF Grant CCF-0448658 and NSF Grant ECS-0507270.

Footnotes

  1. preprint:

References

  1. H. Ollivier and J.-P. Tillich, Phys. Rev. Lett. 91, 177902 (2003).
  2. H. Ollivier and J.-P. Tillich, arXiv:quant-ph/0401134 (2004).
  3. M. Grassl and M. Rötteler, in Proceedings of the IEEE International Symposium on Information Theory (arXiv:quant-ph/0602129) (2006a), pp. 1109–1113.
  4. M. Grassl and M. Rötteler, in Proceedings of the Forty-Fourth Annual Allerton Conference on Communication, Control, and Computing (2006b), pp. 510–519.
  5. M. Grassl and M. Rötteler, in Proceedings of the IEEE International Symposium on Information Theory (arXiv:quant-ph/0703182) (2007), pp. 816–820.
  6. G. D. Forney and S. Guha, in IEEE International Symposium on Information Theory (arXiv:quant-ph/0501099) (2005), pp. 1028–1032.
  7. G. D. Forney, M. Grassl, and S. Guha, IEEE Trans. Inf. Theory 53, 865 (2007).
  8. S. A. Aly, M. Grassl, A. Klappenecker, M. Rötteler, and P. K. Sarvepalli, in Proceedings of the 10th Canadian Workshop on Information Theory (arXiv:quant-ph/0703113) (2007a), pp. 180–183.
  9. S. A. Aly, A. Klappenecker, and P. K. Sarvepalli, arXiv:quant-ph/0701037 (2007b).
  10. R. Johannesson and K. S. Zigangirov, Fundamentals of Convolutional Coding (Wiley-IEEE Press, 1999).
  11. T. A. Brun, I. Devetak, and M.-H. Hsieh, Science 314, pp. 436 (2006).
  12. M. M. Wilde and T. A. Brun, arXiv:0712.2223 (2007).
  13. M. M. Wilde and T. A. Brun, arXiv:0807.3803 (2008a).
  14. A. J. Viterbi, IEEE Trans. Inf. Theory 13, 260 (1967).
  15. M. M. Wilde, H. Krovi, and T. A. Brun, arXiv:0708.3699 (2007).
  16. A. Calderbank, E. Rains, P. Shor, and N. Sloane, IEEE Trans. Inf. Theory 44, 1369 (1998).
  17. C. H. Bennett and S. J. Wiesner, Phys. Rev. Lett. 69, 2881 (1992).
  18. C. H. Bennett, G. Brassard, C. Crépeau, R. Jozsa, A. Peres, and W. K. Wootters, Phys. Rev. Lett. 70, 1895 (1993).
  19. I. Kremsky, M.-H. Hsieh, and T. A. Brun, Phys. Rev. A 78, 012341 (2008).
  20. M. M. Wilde and T. A. Brun, in Proceedings of the IEEE International Symposium on Information Theory (arXiv:0801.0821) (2008b), pp. 359–363.
Comments 0
Request Comment
You are adding the first comment!
How to quickly get a good reply:
  • Give credit where it’s due by listing out the positive aspects of a paper before getting into which changes should be made.
  • Be specific in your critique, and provide supporting evidence with appropriate references to substantiate general statements.
  • Your comment should inspire ideas to flow and help the author improves the paper.

The better we are at sharing our knowledge with each other, the faster we move forward.
""
The feedback must be of minimum 40 characters and the title a minimum of 5 characters
   
Add comment
Cancel
Loading ...
130429
This is a comment super asjknd jkasnjk adsnkj
Upvote
Downvote
""
The feedback must be of minumum 40 characters
The feedback must be of minumum 40 characters
Submit
Cancel

You are asking your first question!
How to quickly get a good answer:
  • Keep your question short and to the point
  • Check for grammar or spelling errors.
  • Phrase it like a question
Test
Test description